package space.misiro.ledgers.middleware.api.domain.um

/**
 * 承载令牌信息的数据传输对象，通常用于OAuth2认证响应
 *
 * @property accessToken 用于访问受保护资源的令牌凭证
 * @property tokenType 令牌类型标识符，默认为Bearer类型
 * @property expiresIn 访问令牌的有效期（单位：秒）
 * @property refreshToken 用于获取新访问令牌的刷新令牌
 * @property accessTokenObject 包含详细令牌信息的访问令牌对象
 * @property scopes 当前令牌授予的权限范围集合（区分大小写的字符串集合）
 */
data class BearerTokenTO(
    val accessToken: String,
    val tokenType: String = "Bearer",
    val expiresIn: Int? = null,
    val refreshToken: String?,
    val accessTokenObject: AccessTokenTO? = null,
    val scopes: Set<String> = setOf()
)
